Direkt Atamalı Cache
Direkt atamalı (direct-mapped) cache'te her bellek bloğu cache'te sadece bir yere yerleştirilebilir.
Cache Yapısı
Bir cache bloğu üç kısımdan oluşur:
- Valid Bit: Bloğun geçerli veri içerdiğini gösterir
- Tag: Hangi bellek adresinin saklandığını belirtir
- Data: Gerçek veri
Adres Dönüşümü
Bir bellek adresi üç kısma ayrılır:
Bellek Adresi = [Tag | Index | Offset]
- Offset: Blok içindeki byte'ı seçer
- Index: Cache'te hangi satırı kullanacağını belirtir
- Tag: Doğru bloğun saklandığını doğrular
- Offset: Blok içindeki byte'ı seçer
- Index: Cache'te hangi satırı kullanacağını belirtir
- Tag: Doğru bloğun saklandığını doğrular
Cache Erişimi
Cache'e erişim adımları:
- 1. Index bitlerini kullanarak cache satırını seç
- 2. Valid bit'i kontrol et (geçerli mi?)
- 3. Tag'i karşılaştır (doğru veri mi?)
- 4. Eşleşiyorsa HIT, değilse MISS
Cache Boyutlandırma
Cache Boyutu = (2^Index) × Blok Boyutu
Örnek: 10-bit index, 64-byte blok
= 2^10 × 64 = 1024 × 64 = 64 KB cache
Örnek: 10-bit index, 64-byte blok
= 2^10 × 64 = 1024 × 64 = 64 KB cache
Associativity (İlişkilendirme)
- Direct-Mapped: Her adres 1 yere gidebilir
- 2-way Set Associative: Her adres 2 yere gidebilir
- 4-way Set Associative: Her adres 4 yere gidebilir
- Fully Associative: Her adres herhangi bir yere gidebilir
Replacement Politikaları
Cache dolduğunda hangi bloğun çıkarılacağı:
- LRU (Least Recently Used): En az kullanılanı çıkar
- FIFO (First In First Out): En eskiyi çıkar
- Random: Rastgele seç
Soru 1: Direkt atamalı cache'te her bellek bloğu kaç yere gidebilir?
Soru 2: Cache bloğundaki Valid Bit ne işe yarar?
Soru 3: Cache bloğundaki Tag ne içerir?
Soru 4: Bellek adresi kaç kısma ayrılır?
Soru 5: Index bitleri ne işe yarar?
Soru 6: Offset ne işe yarar?
Soru 7: 2-way Set Associative cache'te her adres kaç yere gidebilir?
Soru 8: LRU replacement policy ne demektir?
Soru 9: Fully Associative cache'in özelliği nedir?
Soru 10: 10-bit index ve 64-byte blok boyutu ile cache boyutu ne olur?
Direct-Mapped
Her adres sadece 1 yere yerleştirilebilir
Valid Bit
Bloğun geçerli veri içerip içermediğini gösterir
Tag
Hangi bellek adresinin saklandığını belirtir
Index
Cache'te hangi satırın kullanılacağını belirler
Offset
Blok içinde hangi byte'ın okunacağını seçer
Adres yapısı
[Tag | Index | Offset]
Cache erişim
1.Index seç 2.Valid kontrol 3.Tag karşılaştır
2-way Set Assoc
Her adres 2 alternatif yere gidebilir
4-way Set Assoc
Her adres 4 alternatif yere gidebilir
Fully Associative
Her adres herhangi bir yere gidebilir
LRU
Least Recently Used - En az kullanılanı çıkar
FIFO
First In First Out - En eskiyi çıkar
Random
Rastgele blok seçerek değiştir
Associativity
Bir adresin kaç farklı yere gidebileceği
Cache boyutu
2^Index × Blok_Boyutu